/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controllers;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Font.FontFamily;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.DocumentException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.bouncycastle.ocsp.Req;

import models.Requerimento;


import play.mvc.Controller;


public class GeradorDePDF extends Controller {

	static Document doc = null;
	static OutputStream os = null;


	public static void deletePDF(String path) {
		
		File a = new File(path);
	    a.delete();
	    Coordenador.index();
	}

	public static String criarPDF(Requerimento requerimento, boolean aprovado) throws Exception{

		String matricula = requerimento.matricula.substring(1);
		String endereco = "requerimentoaluno\\public\\"+matricula+".pdf";
		try {
			//cria o documento tamanho A4, margens de 2,54cm
			doc = new Document(PageSize.A4, 72, 72, 72, 72);

			//cria a stream de saída
			os = new FileOutputStream(endereco);

			//associa a stream de saída ao
			PdfWriter.getInstance(doc, os);

			//abre o documento
			doc.open();

			// FONTES
			//Seleciona a fonte
			Font f = new Font(FontFamily.COURIER, 10, Font.BOLD);
			//Seleciona a fonte do TITLE
			Font title = new Font(FontFamily.TIMES_ROMAN, 18, Font.UNDEFINED);


			// HEADER
			Image img = Image.getInstance("requerimentoaluno\\public\\images\\header2.jpg");
			img.setAlignment(Element.ALIGN_CENTER);
			doc.add(img);


			// TITLE
			Paragraph p = new Paragraph("REQUERIMENTO", title);
			p.setAlignment(Element.ALIGN_CENTER);
			p.setSpacingAfter(25);
			doc.add(p);

			p = new Paragraph("___________________________________________________________________");
			p.remove(0);

			p.add("ALUNO: " + requerimento.aluno + "                    MATRICULA: " + requerimento.matricula);
			doc.add(p);
			p.remove(0);

			p.add("ENDEREÇO:" + requerimento.endereco);
			doc.add(p);

			p.remove(0);

			p.add("BAIRRO: " + requerimento.bairro);
			p.setAlignment(Element.ALIGN_LEFT);

			doc.add(p);
			p.remove(0);
			p.add("CIDADE: " + requerimento.cidade + "  UF: " + requerimento.uf);
			doc.add(p);


			p.remove(0);

			p.add("CEP: " + requerimento.cep);
			doc.add(p);
			p.remove(0);

			p.setSpacingAfter(20);
			doc.add(p);

			p = new Paragraph("Venho requerer ao Programa de Mestrado em Informática da UFPB o(a) " + requerimento.requerimento);
			doc.add(p);

			p.remove(0);
			p.setSpacingAfter(20);


			doc.add(p);

			// p.remove(0);
			p.add("JUSTIFICATIVA:" + requerimento.justificativa);
			doc.add(p);
			p.remove(0);

			p.setSpacingAfter(10);
			doc.add(p);

			p.add("Nestes termos, pede deferimento.");
			doc.add(p);
			p.remove(0);
			SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); 
			String data = formatador.format(requerimento.date);
			
			
			if(aprovado)
				p.add("SITUAÇÃO DO REQUERIMENTO:      DEFERIDO");
			else
				p.add("SITUAÇÃO DO REQUERIMENTO:    INDEFERIDO");
			
			doc.add(p);
			p.remove(0);
			
			
			
			p.add("João Pessoa, " + data);
			doc.add(p);
			p.remove(0);

			p.setSpacingAfter(0);
			doc.add(p);
			
			
			
			p.setSpacingAfter(60);
			doc.add(p);
			
			p.add("______________________________");
			doc.add(p);
			p.remove(0);
			p.add("         	      Assinatura");


			doc.add(p);

			//doc.add(p);

			doc.close();

		} finally {
			if (doc != null) {
				//fechamento do documento
				doc.close();
			}
			if (os != null) {
				//fechamento da stream de saída
				os.close();
			}
		}

return endereco;
	}

}
